package com.dhecp.project.common.service;

import java.util.Map;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.project.common.domain.UpdateFlow;

/**
 * 
 * @author DH-Xxj
 * @version 2019年11月25日
 */
public interface BaseModuleService {

	/**
	 * 保存 - 公共基础方法
	 * @param moduleTable 必要参数：功能唯一标识
	 * @param infoMap 必要参数：非网格字段（包括所有显示和隐藏的字段）
	 * @param infoItems 必要参数：对应实体类的json格式字符串
	 * @return Map
	 * @author DH-Xxj
	 */
	AjaxResult saveDataBase(Map<String, Object> params);

	/**
	 * 大数据分批保存 - 公共基础方法
	 * @param moduleTable 必要参数：功能唯一标识
	 * @param infoMap 必要参数：非网格字段（包括头部、底部所有显示和隐藏的字段）
	 * @param infoItems 必要参数：对应实体类的json格式字符串
	 * @return Map
	 * @author DH-Xxj
	 */
	AjaxResult saveBigDataBase(Map<String, Object> params);

	/**
	 * 流程处理 - 公共基础方法，返回单据（流转、回退等）后的流程状态信息
	 * @param params
	 * @param fType 必要参数：流程操作类型（流转：go，退回：back，驳回：reject，重置：reset）
	 * @return UpdateFlow
	 * @author DH-Xxj
	 */
	UpdateFlow FlowDealBase(Map<String, Object> params);

	/**
	 * 流转 - 公共基础方法
	 * @param infoMap 必要参数：非网格字段（包括所有显示和隐藏的字段）
	 * @param infoItems 必要参数：对应实体类的json格式字符串（仅需 guid）
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateFlowGoBase(Map<String, Object> params);

	/**
	 * 退回 - 公共基础方法
	 * @param infoMap 必要参数：非网格字段（包括所有显示和隐藏的字段）
	 * @param infoItems 必要参数：对应实体类的json格式字符串（仅需 guid）
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateFlowBackBase(Map<String, Object> params);

	/**
	 * 重置流程 - 公共基础方法
	 * @param nid 必要参数：单据编码
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateFlowResetBase(Map<String, Object> params);

	/**
	 * 重置回退- 公共基础方法
	 * @param params
	 * @return
	 */
	AjaxResult updateFlowResetBack(Map<String, Object> params);
	
}